1. Technical Field
The present invention relates generally to the field of data processing systems, and more specifically to a method, system, and product for serializing hardware reset requests in a software communication request queue.
2. Description of Related Art
A data processing system typically includes one or more processors for controlling the system. In some systems, a service processor is included for managing, testing, and controlling data processing system components. The service processor card that includes the service processor is coupled to other system resources, such as processor cards, memory cards, and/or I/O cards. These resource cards each include a microcontroller and memory. The service processor includes a queue for storing software communication requests. Software communication requests destined for one of these resource cards are placed in the service processor queue for processing and then transmitted via a bus to the appropriate microcontroller. In this manner, software may read, write, and/or create data blocks within these various microcontrollers.
Occasionally, the microcode executing within one of the microcontrollers gets into some undefined state and stops responding. To get the microcode back to a running state, the microcontroller must be reset. In order to reset a microcontroller, the service processor generates a hardware reset through a hardware reset line. This hardware reset is not a software communication request. The hardware reset pulls the hardware reset line high, thus, triggering a reset in every resource card that is coupled to the reset line. Since all resource cards, however, are coupled together using the same hardware reset line, each resource card will be reset. The service processor card is coupled directly to each resource utilizing the single hardware reset line. Thus, when the service processor needs to reset one resource card, all resource cards will be simultaneously reset.
A problem may occur during reset when other software processes are communicating with one or more of the resource cards when the reset occurs. A request between a resource card and a software component is broken down into several small packets. The resource card keeps track of these packets using some synchronization (sync) bits that change each time a packet of data is either sent or received. These sync bits are also reset whenever the microcontroller is reset. Therefore, when the microcontroller is reset, if the microcontroller is in the middle of processing a request, the information about the processing of the data packets of that request will be lost when the sync bits are reset. This problem is further compounded because several different software components may be communicating with the various resource cards when one resource card needs to be reset. The need to reset this one resource card will also reset all of the other resource cards, thus resetting the sync bits in each resource card and disrupting the communication between these resource cards and the software process that is trying to communication with the resource cards.
Therefore, a need exists for a method, system, and product for serializing hardware reset requests in a software communication request queue so that reset requests do not disrupt the processing of pending software requests being processed by any of the resource cards.